<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .btnOne {
      font-size: 20px;
      width: 100px;
      height: 30px;
    }

    .btnTwo {
      font-size: 20px;
      width: 105px;
      height: 32px;
    }

    .btnThree {
      font-size: 20px;
      width: 110px;
      height: 34px;
    }

    .btnFour {
      font-size: 20px;
      width: 120px;
      height: 36px;
    }

    .btnFive {
      font-size: 20px;
      width: 125px;
      height: 38px;
    }
  </style>
</head>

<body>
  <button id="btn" class="btnOne">点我点我</button>

  <script>
    function pow2(x) {
      return Math.pow(x, 2)
    }

    var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    var arrByPow2 = arr.map(pow2);
    var newArrByPow2 = arr.map(x => Math.pow(x, 2))
    var arrByString = arr.map(String);
    console.log(arrByPow2);
    console.log(newArrByPow2);
    console.log(arrByString);
    let sum1 = arr.reduce((a, b) => a + b);
    let sum2 = arrByString.reduce((a, b) => a + b);
    console.log(sum1);
    console.log(sum2);

    var arrByOdd = arr.filter(x => x % 2 == 1)
    var arrByEve = arr.filter(x => x % 2 == 0)
    console.log(arrByOdd)
    console.log(arrByEve)

    var arrByOver5 = arr.filter(x => x > 5)
    console.log(arrByOver5);
    console.log("--------------------------------------");
    console.log("去除重复的数组的元素");

    var arrRepeat = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
    var arrByUnique = arrRepeat.filter((e, i, s) => s.indexOf(e) === i)
    console.log(arrByUnique)

    console.log("--------------------------------------");
    console.log("排序数组");

    //sort会直接修改sort，返回的也是sort
    var arr2 = [6, 8, 46, 32, 9, 223, 54];
    var arrBySortASC = arr2.sort((a,b)=>a-b)
    // var arrBySortDESC = arr2.sort((a, b) => b - a)
    console.log(arrBySortASC)
    // console.log(arrBySortDESC)
    console.log(arr2)
    console.log(arr2.reverse())

    console.log("--------------------------------------");
    console.log("add(1);        // 1");
    console.log("add(1)(2);     // 3");
    console.log("add(1)(2)(3);  // 6");
    

    // function add(a) {
    //   return a;
    // }


    // function add(a) {
    //   return function(b) {
    //     a = a + b;
    //     return a;
    //   }
    // }


    // function add(a) {
    //   return function(b) {
    //     a = a + b;
    //     return function(c) {
    //       a = a + c;
    //       return a;
    //     }
    //   }
    // }


    // function add(a) {
    //   function num(b) {
    //     a = a + b;
    //     return num;
    //   }
    //   num.toString = function() {
    //     return a;
    //   }
    //   return num;
    // }


    // const add = x=>y=>z=>x+y+z;


    // function add() {
    //   console.log('进入add');
    //   var args = Array.prototype.slice.call(arguments);//是将传入的参数转为数组

    //   var fn = function() {
    //     var arg_fn = Array.prototype.slice.call(arguments);
    //     console.log('调用fn');
    //     return add.apply(null,args.concat(arg_fn))//concat连接
    //   }

    //   fn.valueOf = function() {
    //     console.log('调用valueOf');
    //     return args.reduce(function(a,b){
    //       return a + b;
    //     })
    //   }

    //   fn.toString = function() {
    //     console.log('调用toString');
    //     return {}
    //   }
    //   return fn;
    // }

    // 
    // function add(...arg) {
    //   var a = [...arg];
    //   _add = function (...innerArg) {
    //     if (innerArg.length === 0) {
    //       return a.reduce(function (a, b) { return a + b })
    //     } else {
    //       [].push.apply(a, innerArg)
    //       return _add;
    //     }
    //   }
    //   return _add
    // }

    // function accumulate(...args) {
    //   return args.reduce((prev, val) => {
    //     return prev + val;
    //   })
    // }
    // console.log(accumulate(1, 2, 3, 4, 5))
    // console.log(add(1)(2)())
    // var c = 1;
    // function change() {
    //   console.log("定时器")
    //   let btn = document.getElementById("btn")
    //   console.log(btn)
    //   setInterval(() => {
    //     console.log(c)

    //     if (c == 1) {
    //       btn.setAttribute("class", "btnOne")
    //       c++;

    //     } else if (c == 2) {
    //       btn.setAttribute("class", "btnTwo")
    //       c++;

    //     } else if (c == 3) {
    //       btn.setAttribute("class", "btnThree")
    //       c++;

    //     } else if (c == 4) {
    //       btn.setAttribute("class", "btnFour")
    //       c++;

    //     } else if (c == 5) {
    //       btn.setAttribute("class", "btnFive")
    //       c++;
    //     } else if (c == 6) {
    //       btn.setAttribute("class", "btnFour")
    //       c++;
    //     } else if (c == 7) {
    //       btn.setAttribute("class", "btnThree")
    //       c++;
    //     } else if (c == 8) {
    //       btn.setAttribute("class", "btnTwo")
    //       c++;
    //     } else if (c == 9) {
    //       btn.setAttribute("class", "btnOne")
    //       c = 1;
    //     }
    //   }, 135)
    // }
    // change();
  </script>
</body>

</html>